/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.tesoreria.be;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Gilmar Montoya
 */
@Entity
@Table(name = "tes_cierre_caja")
@NamedQueries({@NamedQuery(name = "CierreCaja.findAll", query = "SELECT c FROM CierreCaja c"), @NamedQuery(name = "CierreCaja.findByCieCodigo", query = "SELECT c FROM CierreCaja c WHERE c.cieCodigo = :cieCodigo"), @NamedQuery(name = "CierreCaja.findByCieFecha", query = "SELECT c FROM CierreCaja c WHERE c.cieFecha = :cieFecha"), @NamedQuery(name = "CierreCaja.findByCieMonto", query = "SELECT c FROM CierreCaja c WHERE c.cieMonto = :cieMonto"), @NamedQuery(name = "CierreCaja.findByCieSincronizado", query = "SELECT c FROM CierreCaja c WHERE c.cieSincronizado = :cieSincronizado")})
public class CierreCaja implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "cie_codigo", nullable = false)
    private Long cieCodigo;
    @Basic(optional = false)
    @Column(name = "cie_fecha", nullable = false)
    @Temporal(TemporalType.DATE)
    private Date cieFecha;
    @Basic(optional = false)
    @Column(name = "cie_monto", nullable = false, precision = 11, scale = 4)
    private Double cieMonto;
    @Basic(optional = false)
    @Column(name = "cie_sincronizado", nullable = false)
    private boolean cieSincronizado;
    @Column(name = "cie_estado", nullable = false)
    private EnumEstadoCierreCaja estado;
    @Column(name = "cie_numeracion", nullable = false)
    private Integer cieNumeracion;
    @Lob
    @Column(name = "cie_archivo")
    private byte[] archivo;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "cierreCaja", fetch = FetchType.LAZY)
    private List<CierreDocumento> cierreDocumentoList;

    public CierreCaja() {
    }

    public CierreCaja(Long cieCodigo) {
        this.cieCodigo = cieCodigo;
    }

    public CierreCaja(Long cieCodigo, Date cieFecha, Double cieMonto, boolean cieSincronizado) {
        this.cieCodigo = cieCodigo;
        this.cieFecha = cieFecha;
        this.cieMonto = cieMonto;
        this.cieSincronizado = cieSincronizado;
    }

    public Long getCieCodigo() {
        return cieCodigo;
    }

    public void setCieCodigo(Long cieCodigo) {
        this.cieCodigo = cieCodigo;
    }

    public Date getCieFecha() {
        return cieFecha;
    }

    public String getStringFecha(){
        try{
        SimpleDateFormat sd = new SimpleDateFormat("ddMMyyyy");
        return sd.format(cieFecha);
        }catch(Exception e){
            return "00/00/0000";
        }
    }

    public void setCieFecha(Date cieFecha) {
        this.cieFecha = cieFecha;
    }

    public Double getCieMonto() {
        return cieMonto;
    }

    public void setCieMonto(Double cieMonto) {
        this.cieMonto = cieMonto;
    }    

    public List<CierreDocumento> getCierreDocumentoList() {
        return cierreDocumentoList;
    }

    public void setCierreDocumentoList(List<CierreDocumento> cierreDocumentoList) {
        this.cierreDocumentoList = cierreDocumentoList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (cieCodigo != null ? cieCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof CierreCaja)) {
            return false;
        }
        CierreCaja other = (CierreCaja) object;
        if ((this.cieCodigo == null && other.cieCodigo != null) || (this.cieCodigo != null && !this.cieCodigo.equals(other.cieCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.cip.esymons.tesoreria.be.CierreCaja[cieCodigo=" + cieCodigo + "]";
    }

    /**
     * @return the cieSincronizado
     */
    public boolean isCieSincronizado() {
        return cieSincronizado;
    }

    /**
     * @param cieSincronizado the cieSincronizado to set
     */
    public void setCieSincronizado(boolean cieSincronizado) {
        this.cieSincronizado = cieSincronizado;
    }

    /**
     * @return the archivo
     */
    public byte[] getArchivo() {
        return archivo;
    }

    /**
     * @param archivo the archivo to set
     */
    public void setArchivo(byte[] archivo) {
        this.archivo = archivo;
    }

    /**
     * @return the estado
     */
    public EnumEstadoCierreCaja getEstado() {
        return estado;
    }

    /**
     * @param estado the estado to set
     */
    public void setEstado(EnumEstadoCierreCaja estado) {
        this.estado = estado;
    }

    /**
     * @return the cieNumeracion
     */
    public Integer getCieNumeracion() {
        return cieNumeracion;
    }

    /**
     * @param cieNumeracion the cieNumeracion to set
     */
    public void setCieNumeracion(Integer cieNumeracion) {
        this.cieNumeracion = cieNumeracion;
    }

}
